package AIRProject.filemanager
{
	import events.MyEvent;
	
	import flash.events.Event;
	import flash.events.EventDispatcher;
	import flash.events.IOErrorEvent;
	import flash.filesystem.File;
	import flash.filesystem.FileMode;
	import flash.filesystem.FileStream;
	import flash.events.IEventDispatcher;
	import utils.Alert;
	public final class FileUtil extends EventDispatcher
	{
		public function FileUtil()
		{
		}
		
		/*
		* url 既可以是nativePath 也可以是  url 
		*/
		public static function createDirectory (url:String):File
		{

			var file:File=File.desktopDirectory;
			
			if(url.charAt(0)=="f"){
				file.url=url;
			}
			else {
				
				file.nativePath=url
			}
			
			if(!file.exists){
				///创建文件夹
				
				file.createDirectory();
			}
			return file;

		}
		
		/**
		 * 在已存在的文件夹下面创建一个文件夹
		 */
		public static function  createExistDirector(rootFile:File,path:String):File
		{

			var file:File=File.desktopDirectory;
			var url:String=rootFile.url;
			url=url+"/"+path;
			file= FileUtil.createDirectory(url);
			
			return file;

		}
		
		/* 
		设置 File 的路径，如果有指定的File路径则直接返回 该路径，  如果设置的File.url 路径不存在  则创建该路径并返回路径  返回的是url路径
		*/ 
		public static  function setDirectoryURL(url:String):String
		{
			
			var file:File=FileUtil.createDirectory(url);
			
			return file.url;

		}
		
		public static function createFile(file:File,resovePath:String,content:String="",code:String="utf-8"):File
		{
			

			////创建文件
			var myF:File=file.resolvePath(resovePath);
			var fileStream:FileStream=new FileStream();
			
			fileStream.open(myF,FileMode.WRITE);
			fileStream.writeMultiByte(content,code);
			fileStream.close();
			return myF;
			
		}
		
		public static function createXMLFile(file:File,resovePath:String,content:String=""):File
		{
			
			
			
			////创建文件
			var myContent:String='<?xml version="1.0" encoding="utf-8"?>/n';
			myContent+=content;
			return FileUtil.createFile(file,resovePath,myContent);
			
		} 
		
		/*
		* 复制 文件  或者目录   复制的过程中  假如有相同的文件存在，则会将原来的文件覆盖掉     返回复制后的文件对象
		@param   originalFile 是要复制的文件源对象  
		@param   url   指的是文件File的 的url路径 形式类似于  file:///C:/   并且是绝对路径    url网络形式路径, 是复制后 的副本对象
		*/
		
		public static function copyFileToAsync(originalFile:File,url:String):void
		{
			var newFile:File=File.desktopDirectory;
			newFile.url=url;
			
			originalFile.copyToAsync(newFile,true);
			originalFile.addEventListener(Event.COMPLETE,onComplete,false,0,true);
			originalFile.addEventListener(IOErrorEvent.IO_ERROR,onError,false,0,true);
	
		}
		
		private  static function  onComplete(e:Event):void
		{
			Alert.show("文件复制完成");
		}
		private static function onError(e:IOErrorEvent):void
		{
		
			Alert.show("复制文件发生错误");
		}
		
	}
}